package com.yazi.mxz.common.service;


import com.myframework.smhj.common.exception.MyException;
import com.myframework.smhj.hibernate.dao.Service;

import com.yazi.mxz.common.entity.beans.Address;
import com.yazi.mxz.common.entity.beans.Member;

public interface AddressService extends Service<Address> {
	
	/**
	 * 添加收货地址<br>
	 * 本方法不检查对象属性值的合法性, 请构建好完整的对象再调用本方法
	 * @param address 地址
	 * @param isDefault 是否为默认
	 */
	Address add(Address address, Boolean isDefault);
	
	/**
	 * 删除用户的收货地址,并返回默认收货地址.<br>
	 * 如果删除的是默认地址,则随机取一个作为默认地址,如果没有任何地址了,则返回null.
	 * @param member 用户(游离对象)
	 * @param addressId 地址ID
	 */
	Address removeByMember(Member member, long addressId);
	
	/**
	 * 设置默认收货地址
	 * @param member 用户(游离对象)
	 * @param addressId 地址ID
	 */
	void editDefaultByMember(Member member, long addressId) throws MyException;
	
	/**
	 * 修改收货地址
	 * @param member 用户(游离对象)
	 * @param address 地址(构建对象)
	 * @param isDefault 是否设为默认地址
	 * @return
	 */
	Address editByMember(Member member, Address address, Boolean isDefault) throws MyException;
}
